<?php
/* funcion que valida login de usuario*/
function fValidarLogin($sUsuario, $sPassword,&$errors) {
	$i18n = &$GLOBALS["I18N"] ;
	if (strlen($sUsuario) == 0)
	{
		$errors->Add('login_vacio', $i18n->getKey("errors.empty"),$i18n->getKey("form.login.login"));
		return false;
	};
	if (!fTieneSoloLetrasNumerosGuiones($sUsuario)){
		$errors->Add('login_sucio', $i18n->getKey("errors.campo_con_valores_no_numeros_no_letras_no_guiones"),$i18n->getKey("form.login.login"));
		return false;
	};
	if (strlen($sPassword) == 0)
	{
		$errors->Add('password_vacia', $i18n->getKey("errors.empty"),$i18n->getKey("form.login.password"));
		return false;
	};
	if (!fTieneSoloLetrasNumerosGuiones($sPassword)){
		$errors->Add('password_sucia', $i18n->getKey("errors.campo_con_valores_no_numeros_no_letras_no_guiones"),$i18n->getKey("form.login.password"));
		return false;
	};
	fDbConectar($db);
	$query = "SELECT * FROM v_usuario"; 
	$query .= " Where alias = '" .$sUsuario. "' ";
	$resultado = fDbEjecutarQuery($query);
   if ($fila = fDbLeerFilaQuery($resultado)) {
    	if ($fila['clave'] == MD5($sPassword)) {
    		if ($fila['flag_habilitado_usuario'] == "S"){ 
	    		if ($fila['flag_habilitado_tipo_usuario'] == "S"){ 
	    			if ($fila['flag_habilitado_tipo_cia'] == "S"){ 
		    			if ($fila['flag_habilitado_cia'] == "S"){ 
								$bLoginValido = true;
								$_SESSION["login_name_usuario"] = $sUsuario;
								$_SESSION["usuario_id"]= $fila['id'];
								$_SESSION["usuario_nombre"]= $fila['nombre'];
								$_SESSION["usuario_apellido"]= $fila['apellido'];
								$_SESSION["id_tipo_cia"]= $fila['id_tipo_cia'];
								$_SESSION["id_tipo_usuario"] = $fila['id_tipo_usuario'];
								$_SESSION["nivel_autoridad_tipo_usuario"] = $fila['nivel_autoridad_tipo_usuario'];
								$_SESSION["nivel_autoridad_tipo_cia"] = $fila['nivel_autoridad_tipo_cia'];
						} else {
								$errors->Add('login', $i18n->getKey("errors.cia_deshabilitada"));
						};
					} else {
							$errors->Add('login', $i18n->getKey("errors.tipo_cia_deshabilitada"));
					};
				} else {
						$errors->Add('login', $i18n->getKey("errors.tipo_usuario_deshabilitado"));
				};
			} else {
					$errors->Add('login', $i18n->getKey("errors.usuario_deshabilitado"));
			};
		} else {
			$errors->Add('login', $i18n->getKey("errors.pmc_auth"));
		}
	} else {
		$errors->Add('login', $i18n->getKey("errors.pmc_auth"));
	};
	fDbDesConectar($db);
	if ($errors->isEmpty())
	{
		return true;
	} else {
		return false;
	};
}

// Función que chequea validez de una password

function fNuevaPasswordValida(&$sPassword, &$errors)
{
//getKeyWithVars
	$sPassword = strtoupper($sPassword);
	if (strlen($sPassword) > K_USUARIO_PASSWORD_MAXLENGTH || strlen($sPassword) < K_USUARIO_PASSWORD_MINLENGTH){
		$errors->Add('password', $i18n->getKey("errors.campo_tamanio_invalido"),$i18n->getKey("form.login.password"),K_USUARIO_PASSWORD_MIN_LENGTH,K_USUARIO_PASSWORD_MAX_LENGTH);
		return false;
	};
	// me fijo si tiene basura
	if (fTieneSoloLetrasNumerosGuiones($sPassword)){
		$errors->Add('password', $i18n->getKey("errors.campo_con_valores_no_numeros_no_letras_no_guiones"),$i18n->getKey("form.login.password"));
		return false;
	};
	return true;
}

// función que detecta si la password tiene caract. que no son letras, números ni guiones

function fTieneSoloLetrasNumerosGuiones($sPassword)
{
	//aunque $sPassword viene por valor, por las dudas la paso a otra variable
	$sPassword2 = strtoupper($sPassword);
	//saco caracteres conocidos. Si queda algo, es que hay basura
	$sPassword2=str_replace("Ñ","",$sPassword2);
	$sPassword2=str_replace("_","",$sPassword2);
	$sPassword2=str_replace("-","",$sPassword2);
	$sPassword2= ereg_replace("[^A-Za-z0-9]", "", $sPassword2);
	if (strlen($sPassword2) > 0){
		return true;
	} else {
		return false;
	};
}

// funcion que carga combo de tipos de usuarios

function fCargarComboTipoUsuario($NombreCombo, $IdTipoCia, $sDefecto, $bEnabled = true, $bMostrarOpcionTodos=false, $bMostrarInactivos=false, $sAccion="")

{
	$i18n = &$GLOBALS["I18N"] ;
	$linea = "";
	$linea.= " <select id=\"id_combo\" size=\"1\" name=\"".$NombreCombo."\"";
	if (!$bEnabled){
		$linea.= " disabled ";
	};
	$linea.= " onchange=\"".$sAccion."\">";
	$linea.= "\n";
	if ($bMostrarOpcionTodos)
	{
		$linea.= " <option value=\"0\">".$i18n->getKey("label_general.todos")."</option>\n ";
	};
	fDbConectar($db);
	$sConsulta = "SELECT * FROM t_tipo_usuario where id_tipo_cia = ".$IdTipoCia;
	if (!$bMostrarInactivos)
	{
		$sConsulta.= " and flag_habilitado = 'S' ";
	};
	$sConsulta.= " order by nivel_autoridad ";
	$sResultado = fDbEjecutarQuery($sConsulta);
   while($sFila = fDbLeerFilaQuery($sResultado)){
		$linea.= " <option ";
		if ($sDefecto == $sFila['id']){
			$linea.= " selected ";
		};
		$linea.= " value=\"".$sFila['id']."\">".$sFila['descripcion']."</option>\n ";
    };
  	fDbDesConectar($db);
	$linea.= " </select>\n ";
	echo $linea;
}

function fCargarComboTipoCia($NombreCombo, $sDefecto, $bEnabled = true, $bMostrarOpcionTodos=false, $bMostrarInactivos=false, $sAccion="")

{
	$i18n = &$GLOBALS["I18N"] ;
	$linea = "";
	$linea.= " <select id=\"id_combo\" size=\"1\" name=\"".$NombreCombo."\"";
	if (!$bEnabled){
		$linea.= " disabled ";
	};
	$linea.= " onchange=\"".$sAccion."\">";
	$linea.= "\n";
	if ($bMostrarOpcionTodos)
	{
		$linea.= " <option value=\"0\">".$i18n->getKey("label_general.todos")."</option>\n ";
	};
	fDbConectar($db);
	$sConsulta = "SELECT * FROM t_tipo_cia";
	if (!$bMostrarInactivos)
	{
		$sConsulta.= " where flag_habilitado = 'S' ";
	};
	$sConsulta.= " order by nivel_autoridad ";
	$sResultado = fDbEjecutarQuery($sConsulta);
   while($sFila = fDbLeerFilaQuery($sResultado)){
		$linea.= " <option ";
		if ($sDefecto == $sFila['id']){
			$linea.= " selected ";
		};
		$linea.= " value=".$sFila['id'].">".$sFila['descripcion']."</option>\n ";
    };
  	fDbDesConectar($db);
	$linea.= " </select>\n ";
	echo $linea;
}
?>